from launch import LaunchDescription                   # launch文件的描述类
from launch.actions import DeclareLaunchArgument       # 声明launch文件内使用的Argument类
from launch.substitutions import LaunchConfiguration, TextSubstitution

from launch_ros.actions import Node                    # 节点启动的描述类

def generate_launch_description():     # 自动生成launch文件的函数
   return LaunchDescription([          # 返回launch文件的描述信息
      DeclareLaunchArgument(
         'port', default_value=TextSubstitution(text='10008')     # 创建一个Launch文件内参数（arg）background_r
      ),
      Node(                                  # 配置一个节点的启动
         package='qubot_pkg_python',        # 节点所在的功能包
         executable='topic_helloworld_pub', # 节点的可执行文件
      ),
      Node(                                  # 配置一个节点的启动
         package='qubot_pkg_python',        # 节点所在的功能包
         executable='topic_helloworld_sub', # 节点的可执行文件名
      ),
      Node(                                  # 配置一个节点的启动
         package='qubot_pkg_python',        # 节点所在的功能包
         executable='http_ros_bridge', # 节点的可执行文件名
      ),
      Node(                                 # 配置一个节点的启动
         package='qubot_pkg_python',        # 节点所在的功能包
         executable='http_ros_bridge',      # 节点的可执行文件名
         # namespace=''                     # 可以给节点添加命名空间(分组)
         # name=''                          # 可以给节点重命名
         parameters=[{                      # 节点参数
            'port': LaunchConfiguration('port'),
         }]                
      )
   ])
